package com.xoms.admin.service;

/**
 * Created with IntelliJ IDEA.
 * User: tzz(Tian)
 * Date: 2018/4/28 11:45
 */

import com.xoms.admin.controller.res.ListResult;
import com.xoms.admin.controller.res.bean.*;
import com.xoms.admin.controller.springmvc.req.GetDimePriceDetailParam;
import com.xoms.admin.controller.springmvc.req.GetRoomListParam;
import com.xoms.admin.controller.springmvc.req.GetRoomMonthPriceParam;
import com.xoms.admin.controller.springmvc.req.GetRoomPriceDetailParam;
import com.xoms.admin.model.*;
import com.xoms.admin.service.res.PageResult;

/**
 * 影厅业务
 */
public interface RoomService {
    /**
     * @Description:   getRoomDimensions 获取维度分类信息
     * @author:        tzz
     * @Param:         []
     * @Return:        com.xoms.admin.service.res.PageResult<com.xoms.admin.controller.res.bean.RRoomDimensionBean>
     * @Date:          2018/4/28 12:33
     */
    PageResult<RRoomDimensionBean> getRoomDimensions();

    /**
     * @Description:   getDetails 获取维度详细列表
     * @author:        tzz
     * @Param:         [dimensionId 维度id]
     * @Return:        com.xoms.admin.controller.res.ListResult<com.xoms.admin.controller.res.bean.RRoomDimensionDetailBean>
     * @Date:          2018/4/29 22:44
     */
    ListResult<RRoomDimensionDetailBean> getDimensionDetails(String dimensionId);

    /**
     * 获取所有详细信息
     * @return
     */
    ListResult<RRoomDimensionDetailBean> getDimensionAllDetail();

    /**
     * @Description:   getDimensionScale 获取维度组合下拉列表
     * @author:        tzz
     * @Param:         [dimensionId 维度id, did 维度详情id, pids 组合筛选]
     * @Return:        com.xoms.admin.controller.res.ListResult<com.xoms.admin.controller.res.bean.RRoomDimensionScaleBean>
     * @Date:          2018/5/2 16:17
     */
    ListResult<RRoomDimensionScaleBean> getDimensionScaleDownList(String dimensionId, String did, String[] pids);

    /**
     * 获取维度组合列表
     * @return
     */
    ListResult<RRoomDimensionScaleListBean> getDimensionScaleList();

    /**
     * 新建/编辑维度详情
     * @param account 账号
     * @param data 数据
     * @return
     */
    RoomDimensionDetailBean editDimensionDetail(AccountBean account, RoomDimensionDetailBean data);

    /**
     * 删除详情信息
     * @param account 账号
     * @param id id
     * @return
     */
    boolean delDimensionDetail(AccountBean account, String id);

    /**
     * 新建/编辑维度组合
     * @param account 账号
     * @param data 数据
     * @return
     */
    RoomDimensionScaleBean editDimensionScale(AccountBean account, RoomDimensionScaleBean data);

    /**
     * 删除组合信息
     * @param account 账号
     * @param id id
     * @return
     */
    boolean delDimensionScale(AccountBean account, String id);

    /**
     * 新建/更新影厅信息
     * @param account
     * @param data
     * @param scales 类型字符串数组
     * @return
     */
    RoomBean editRoom(AccountBean account, RoomBean data, String scales);

    /**
     * 获取影厅列表
     * @return
     */
    ListResult<RRoomBean> getRoomList(GetRoomListParam param);

    /**
     * 删除影厅
     * @param account
     * @param id
     * @return
     */
    boolean delRoom(AccountBean account, String id);

    /**
     * 获取时间段列表
     * @return
     */
    ListResult<RTimeBucketBean> getTimeBucketList();

    /**
     * 添加时间段
     * @param account
     * @param data
     * @param buckets ["00:00","09:00"],["09:01","23:59"]
     * @return
     */
    RTimeBucketBean addTimeBucket(AccountBean account, TimeBucketBean data, String buckets);

    /**
     * 删除时间段
     * @param account
     * @param name
     * @return
     */
    boolean delTimeBucket(AccountBean account, String name);

    /**
     * 获取指定名字的所有时间段列表
     * @param account
     * @param name
     * @return
     */
    ListResult<RTimeBucketBean> getTimeBucket(AccountBean account, String name);

    /**
     * 添加基础价格
     * @param account
     * @param data
     * @param bucketName
     *@param scales
     * @param bucketPrices
     * @return
     */
    boolean addDimePrice(AccountBean account, RoomDimePriceBean data, String bucketName, String scales, String bucketPrices);

    /**
     * 添加影厅价格
     * @param account
     * @param data
     * @param bucketName
     * @param bucketPrices
     * @return
     */
    boolean addRoomPrice(AccountBean account, RoomPriceBean data, String bucketName, String bucketPrices);

    /**
     * 影厅价格设置历史
     * @param account
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    ListResult<RRoomPriceBean> getRoomPriceList(AccountBean account, String id, Integer page, Integer pageSize);

    /**
     * 影厅某次价格设置信息
     * @param account
     * @param param
     * @return
     */
    ListResult<RRoomPriceBean> getRoomPriceDetail(AccountBean account, GetRoomPriceDetailParam param);

    /**
     * 获取影厅月价格
     * @param account
     * @param param
     * @return
     */
    ListResult<RRoomMonthPriceBean> getRoomMonthPrice(AccountBean account, GetRoomMonthPriceParam param);

    /**
     * 获取影厅当前有效价格
     * @param account
     * @param id
     * @return
     */
    ListResult<RRoomPriceBean> getRoomCurrPrice(AccountBean account, String id);

    /**
     * 获取影厅信息
     * @param id
     * @return
     */
    RRoomBean getRoomById(String id);

    /**
     * 获取价格设置列表
     * @param account
     * @param dateB
     * @param dateE
     * @param priceType
     * @param scale
     * @param page
     * @param pageSize
     * @return
     */
    ListResult<RDimePriceBean> getDimePriceList(AccountBean account, String dateB, String dateE, Integer priceType, String scale, Integer page, Integer pageSize);

    /**
     * 获取价格设置详情
     * @param account
     * @param param
     * @return
     */
    ListResult<RDimePriceBean> getDimePriceDetail(AccountBean account, GetDimePriceDetailParam param);
}
